import java.sql.*;
import java.util.*;
public class M_Volumen {
    
    private SQLHandler SQL;  
    Object listaVolumenes[][];
    int numeroVolumenes;
    
    int mat_cod;
    String mat_cod_string;
    int vol_cod;
    String vol_cod_string;
    String idUnico;
    String vol_estado_fisico;
    String vol_disponible;
    String vol_reservado_a;
    int vol_contador_renovaciones;
    String vol_contador_renovaciones_string;
    String vol_ubicacion;
    String vol_editorial;
    
  
    public M_Volumen(){
       	
    	SQL=new SQLHandler();
    	listaVolumenes = new Object[500][8];
    	numeroVolumenes=0;
    	
    	
    }
    
    public void agregarVolumen(int codigoMaterial, String estadoFisico, String ubicacion, String editorial){
    	  	try{
   
   	SQL.insertUpdate("insert into volumen(MATERIAL_CODIGO, VOLUMEN_ESTADO_FISICO, VOLUMEN_DISPONIBLE, VOLUMEN_RESERVADO_A, VOLUMEN_CONTADOR_RENOVACIONES, VOLUMEN_UBICACION, VOLUMEN_EDITORIAL) values ("+codigoMaterial+",\""+estadoFisico+"\",\"DISPONIBLE\", \"NO RESERVADO\",0,\""+ubicacion+"\",\""+editorial+"\");");
    
    
    }catch(Exception e){System.out.println(e.getMessage());}
    	
    }

	public void getVolumenes(int codigoMaterial){
		try{
		
		ResultSet res=SQL.select("select * from volumen where material_codigo="+codigoMaterial+" " );	
		System.out.println("select * from volumen where material_codigo="+codigoMaterial+" " );	
	
		while(res.next())
	    {
	  
	            	listaVolumenes[numeroVolumenes][0]=res.getInt("MATERIAL_CODIGO");
	            	listaVolumenes[numeroVolumenes][1]=res.getInt("VOLUMEN_CODIGO");
	            	listaVolumenes[numeroVolumenes][2]=res.getString("VOLUMEN_ESTADO_FISICO");
	            	listaVolumenes[numeroVolumenes][3]=res.getString("VOLUMEN_DISPONIBLE");
	            	listaVolumenes[numeroVolumenes][4]=res.getString("VOLUMEN_RESERVADO_A");
	            	listaVolumenes[numeroVolumenes][5]=res.getInt("VOLUMEN_CONTADOR_RENOVACIONES");
	            	listaVolumenes[numeroVolumenes][6]=res.getString("VOLUMEN_UBICACION");
	            	listaVolumenes[numeroVolumenes][7]=res.getString("VOLUMEN_EDITORIAL");
	            	System.out.println("encontre un volumen");
	            	numeroVolumenes++;
	               
	   }
		}catch(Exception e){System.out.println(e.getMessage());}	
	}

    public void editarDatos(int codigoMaterial, int codigoVolumen, String editorial, String ubicacion,String estadoFisico){
	   	try{
	   
	   	SQL.insertUpdate("update volumen set volumen_editorial=\""+editorial+"\" , volumen_ubicacion=\""+ubicacion+"\" , volumen_estado_fisico=\""+estadoFisico+"\" where volumen_codigo="+codigoVolumen+";");
	    
	    }catch(Exception e){}
   }
   
    public void getDatosVolumen(int codigoMaterial, int codigoVolumen){
	   	try{
		
		ResultSet res=SQL.select("select * from volumen where volumen_codigo="+codigoVolumen+" " );	
		System.out.println("select * from volumen where material_codigo="+codigoMaterial+" " );	
	
		while(res.next())
	   {
	            	mat_cod=res.getInt("MATERIAL_CODIGO");
	            	vol_cod=res.getInt("VOLUMEN_CODIGO");
	            	mat_cod_string=res.getString("MATERIAL_CODIGO");
	            	vol_cod_string=res.getString("VOLUMEN_CODIGO");
	            	vol_estado_fisico=res.getString("VOLUMEN_ESTADO_FISICO");
	            	vol_disponible=res.getString("VOLUMEN_DISPONIBLE");
	            	vol_reservado_a=res.getString("VOLUMEN_RESERVADO_A");
	            	vol_contador_renovaciones=res.getInt("VOLUMEN_CONTADOR_RENOVACIONES");
	            	vol_contador_renovaciones_string=res.getString("VOLUMEN_CONTADOR_RENOVACIONES");
	            	vol_ubicacion=res.getString("VOLUMEN_UBICACION");
	            	vol_editorial=res.getString("VOLUMEN_EDITORIAL");
	            	
	            	
	               
	   }
		}catch(Exception e){System.out.println(e.getMessage());}	
	   	
   }

	public void reservar(int codigoVolumen, String prestatarioReserva){
				try{
	   
	   	SQL.insertUpdate("update volumen set volumen_reservado_a=\""+prestatarioReserva+"\" where volumen_codigo="+codigoVolumen+";");
	    
	    }catch(Exception e){}
		
	}
	
	public void generarIdUnico(){
		int largoCodVol= vol_cod_string.length();
		int largoCodMat= mat_cod_string.length();
		String codVolFixed=vol_cod_string;
		String codMatFixed=mat_cod_string;
		//procesa el codVol maximo 6 digitos para volumenes por material
		for (int i=largoCodVol; i<6; i++)
		codVolFixed="0"+codVolFixed;
		
		//procesa el codMat maximo 5 digitos para materiales
		for (int i=largoCodMat; i<5; i++)
		codMatFixed="0"+codMatFixed;
		
		
		idUnico=codMatFixed+codVolFixed;
		
		System.out.println(idUnico);
		
	}


		
		
		
	

	public void generarCodigosDeID(String id_unico){
		String codVolUnfixed=id_unico.substring(5,11);
		String codMatUnfixed=id_unico.substring(0,5);
		System.out.println("volcodUnfix: "+codVolUnfixed);
		if(codVolUnfixed.substring(0,1).equals("0")){
			codVolUnfixed=codVolUnfixed.substring(1,6);
			System.out.println(codVolUnfixed);
			if(codVolUnfixed.substring(0,1).equals("0")){
				codVolUnfixed=codVolUnfixed.substring(1,5);
				System.out.println(codVolUnfixed);
				if(codVolUnfixed.substring(0,1).equals("0")){
					codVolUnfixed=codVolUnfixed.substring(1,4);
					System.out.println(codVolUnfixed);
					if(codVolUnfixed.substring(0,1).equals("0")){
						codVolUnfixed=codVolUnfixed.substring(1,3);
						System.out.println(codVolUnfixed);
						if(codVolUnfixed.substring(0,1).equals("0")){
							codVolUnfixed=codVolUnfixed.substring(1,2);
							System.out.println(codVolUnfixed);
					
						}
					}
				}
			}
		}
		
		if(codMatUnfixed.substring(0,1).equals("0")){
			codMatUnfixed=codMatUnfixed.substring(1,5);
			System.out.println(codMatUnfixed);
			if(codMatUnfixed.substring(0,1).equals("0")){
				codMatUnfixed=codMatUnfixed.substring(1,4);
				System.out.println(codMatUnfixed);
				if(codMatUnfixed.substring(0,1).equals("0")){
					codMatUnfixed=codMatUnfixed.substring(1,3);
					System.out.println(codMatUnfixed);
					if(codMatUnfixed.substring(0,1).equals("0")){
						codMatUnfixed=codMatUnfixed.substring(1,2);
						System.out.println(codMatUnfixed);
					
					}
				}
			}
		}
		vol_cod=Integer.valueOf(codVolUnfixed).intValue();
		mat_cod=Integer.valueOf(codMatUnfixed).intValue();
		
		
	}
	
	public static void main(String awr[]){
		M_Volumen a=new M_Volumen();
		
			}
			
	public Boolean existeVolumen(String id_unico){
		generarCodigosDeID(id_unico);
		try{
			ResultSet res=SQL.select("Select * from volumen where volumen_codigo=\""+vol_cod+"\";");
			if(res.next()){
				SQL.stmt.close();
				SQL.conn.close();
				System.out.println("volumenXISTE");
		
		    	return true;
		    }else{
		    	SQL.stmt.close();
				SQL.conn.close();
		    	System.out.println("volumenNOEXISTE");
		    	return false;
		}
		
		}catch(Exception e){return true;}

	}  
	
	//DISPONIBLE
	//PRESTADO
	//PERDIDO
	public void actualizaEstadoAPrestado(){
		try{
	   
	   	SQL.insertUpdate("update volumen set  volumen_DISPONIBLE=\"PRESTADO\" where volumen_codigo="+vol_cod+";");
	    
	    }catch(Exception e){System.out.println(e.getMessage());}
		
	}
	
	public void actualizaEstadoADisponible(){
		try{
	   
	   	SQL.insertUpdate("update volumen set  volumen_DISPONIBLE=\"DISPONIBLE\" where volumen_codigo="+vol_cod+";");
	    
	    }catch(Exception e){System.out.println(e.getMessage());}
		
	}
	
	public void eliminaVolumen(int volCod){
		try{
		SQL.insertUpdate("delete from volumen where volumen_codigo="+volCod+"");
	
		}catch(Exception e){}
	}
	
	public boolean estaEnPrestamo(){
		getDatosVolumen(mat_cod,vol_cod);
		if(vol_disponible.equals("PRESTADO"))
		return true;
		else
		return false;
		
	}
	
	public void actualizaContadorRenovaciones(int nuevo){
		try{
	   
	   	SQL.insertUpdate("update volumen set volumen_contador_renovaciones="+nuevo+" where volumen_codigo="+vol_cod+";");
	    
	    }catch(Exception e){System.out.println(e.getMessage());}
		
	}
	

	
}
